home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 9 / The PC-SIG Library on CD ROM - Ninth Edition.iso / 001_100 / DISK0055 / DISK0055.ZIP / CRAZY8.BAS < prev    next >
BASIC Source File  |  1983-02-27  |  9KB  |  296 lines

  1. 10 REM Author Les Davids
  2. 20    DIM SUIT$(4),CARD$(52),DECK$(52)
  3. 30 DIM FIG$(5,5)
  4. 40  DEFINT A-Z
  5. 50  DIM DECK(52),PHAND$(26),CHAND$(26)
  6. 60  DIM TEST(52),OLDHAND$(25)
  7. 70 SCREEN 0,1:COLOR 0,7,7:CLS
  8. 80 KEY OFF
  9. 90 LOCATE 2,9
  10. 100  PRINT "C R A Z Y   E I G H T S"
  11. 110 DIM VALUE$(13),VALUE(13)
  12. 120 LOCATE 4,1
  13. 130 PRINT"The objective of the game is to get rid"
  14. 140 PRINT"of all your cards by placing them on"
  15. 150 PRINT"the discard pile."
  16. 160 PRINT"You can play a card if you have the "
  17. 170 PRINT"same suit, the same number (in which"
  18. 180 PRINT"case the suit changes), or at any time"
  19. 190 PRINT"you can play an eight. If you play an"
  20. 200 PRINT"eight you will be prompted for new suit (h,c,s,d)."
  21. 210 PRINT"If you cannot go, hit the space bar."
  22. 220 PRINT"You will then be dealt a new card."
  23. 230 PRINT
  24. 240 PRINT"Game will end at 100 points."
  25. 250 PRINT"The winner receives points from the"
  26. 260 PRINT"losers hand. Points are equal to "
  27. 270 PRINT"face value. Face cards are 10 each,"
  28. 280 PRINT"aces are worth 15."
  29. 290 LOCATE 22,15:INPUT "NAME ",N$
  30. 300 CLS: LOCATE 2,9
  31. 310 DATA "A","2","3","4","5","6","7"
  32. 320 DATA "8","9","0","J","Q","K"
  33. 330 DATA 15,2,3,4,5,6,7,8,9,10,10,10,10
  34. 340 FOR I=1 TO 13:READ VALUE$(I):NEXT I
  35. 350 FOR I=1 TO 13:READ VALUE(I):NEXT I
  36. 360 PRINT "C R A Z Y   E I G H T S"
  37. 370 LOCATE 5,2:PRINT"SCORE"
  38. 380 LOCATE 6,4:PRINT "COMPUTER";CSCORE
  39. 390 LOCATE 7,4:PRINT N$;PSCORE
  40. 400 FOR I=1 TO 40
  41. 410 LOCATE 9,I: PRINT CHR$(205)
  42. 420 NEXT I
  43. 430 REM ** shuffle cards
  44. 440 GOSUB 1510
  45. 450 REM ** deal cards
  46. 460 COLOR 7,7
  47. 470 FOR I = 1 TO 8
  48. 480   J=1+((I-1)*2)
  49. 490   PHAND$(I)=DECK$(J)
  50. 500   CHAND$(I)=DECK$(J+1)
  51. 510   NEXT I
  52. 520   NEXTCARD = 18
  53. 530 UPCARD$ = DECK$(17)
  54. 540   PCARDS=8
  55. 550 CCARDS=8
  56. 560 REM ** sort player's hand
  57. 570 SORTTEST=1
  58. 580 WHILE SORTTEST
  59. 590   SORTTEST=0
  60. 600   FOR I=1 TO PCARDS-1
  61. 610     CHAR1$=MID$(PHAND$(I),3)
  62. 620     CHAR2$=MID$(PHAND$(I+1),3)
  63. 630     IF CHAR1$>CHAR2$ THEN                      SWAP PHAND$(I),PHAND$(I+1)              : SORTTEST = 1
  64. 640     NEXT I
  65. 650     WEND
  66. 660 THE$="   ": GOSUB 2380
  67. 670 THE$=UPCARD$: GOSUB 2470
  68. 680 ROW=4:COL=19:GOSUB 2390
  69. 690 ROW=10
  70. 700 FOR I=1 TO 6
  71. 710 IF I>(PCARDS+1) THEN 760
  72. 720 IF PHAND$(I)=OLDHAND$(I) THEN 780
  73. 730 OLDHAND$(I)=PHAND$(I)
  74. 740 THE$=PHAND$(I): GOSUB 2470
  75. 750 COL=1+(6*(I-1)): GOSUB 2390
  76. 760 LOCATE 15,(2+((I-1)*6))
  77. 770 IF I<=PCARDS THEN PRINT I                            ELSE PRINT "  "
  78. 780 NEXT I
  79. 790 ROW=17
  80. 800 FOR I=7 TO (PCARDS+1)
  81. 810 J=I-6
  82. 820 IF PHAND$(I)=OLDHAND$(I) THEN 960
  83. 830 OLDHAND$(I)=PHAND$(I)
  84. 840 THE$=PHAND$(I): GOSUB 2470
  85. 850 COL=1+(6*(J-1)): GOSUB 2390
  86. 860 LOCATE 22,(2+((I-7)*6))
  87. 870 IF I=(PCARDS+1) THEN                       PRINT "  ": GOTO 960
  88. 880 IF I<10 THEN PRINT I
  89. 890 IF I = 10 THEN PRINT " A"
  90. 900 IF I = 11 THEN PRINT " B"
  91. 910 IF I = 12 THEN PRINT " C"
  92. 920 IF I = 13 THEN PRINT " D"
  93. 930 IF I = 14 THEN PRINT " E"
  94. 940 IF I = 15 THEN PRINT " F"
  95. 950 IF I = 16 THEN PRINT " G"
  96. 960 NEXT I
  97. 970 LOCATE 23,20:PRINT"ENTER YOUR PLAY"
  98. 980 IN$=INKEY$:IF IN$="" THEN 980
  99. 990 LOCATE 7,29:PRINT"           "
  100. 1000 LOCATE 23,20:PRINT"THINKING       "
  101. 1010 IF IN$<>" " THEN 1090
  102. 1020 IF TAKE=1 THEN 1430
  103. 1030 PCARDS=PCARDS+1
  104. 1040 IF NEXTCARD = 53 THEN 2870
  105. 1050 PHAND$(PCARDS)=DECK$(NEXTCARD)
  106. 1060 NEXTCARD=NEXTCARD+1
  107. 1070 TAKE = 1
  108. 1080 GOTO 570
  109. 1090 IF IN$>"9" THEN 1120
  110. 1100 IN=VAL(IN$)
  111. 1110 GOTO 1220
  112. 1120 IF IN$="a" THEN IN=10
  113. 1130 IF IN$="b" THEN IN=11
  114. 1140 IF IN$="c" THEN IN=12
  115. 1150 IF IN$="d" THEN IN=13
  116. 1160 IF IN$="e" THEN IN=14
  117. 1170 IF IN$="e" THEN IN=15
  118. 1180 IF IN$<"a" OR IN$>"e" THEN 1190            ELSE 1220
  119. 1190 LOCATE 23,20
  120. 1200 PLAY "mfo1fd":PRINT "WRONG CARD"
  121. 1210 GOTO 970
  122. 1220 IN$=PHAND$(IN)
  123. 1230 IF MID$(IN$,2,1)="8" THEN 1290
  124. 1240 IF MID$(IN$,1,2) = MID$(UPCARD$,1,2) THEN 1380
  125. 1250 IF MID$(IN$,3,1) = MID$(UPCARD$,3,1) THEN 1380
  126. 1260 LOCATE 23,20
  127. 1270 PRINT "WRONG CARD"
  128. 1280 GOTO 970
  129. 1290 LOCATE 23,20: PRINT"WHAT SUIT?"
  130. 1300 S$=INKEY$: IF S$="" THEN 1300
  131. 1310 IF S$ = "c" THEN 1360
  132. 1320 IF S$ = "d" THEN 1360
  133. 1330 IF S$ = "h" THEN 1360
  134. 1340 IF S$ = "s" THEN 1360
  135. 1350 GOTO 1300
  136. 1360 REM ** switch suit
  137. 1370 MID$(IN$,3,1)=MID$(S$,1,1)
  138. 1380 TAKE = 0
  139. 1390 UPCARD$ = IN$
  140. 1400 IF IN = PCARDS THEN 1420
  141. 1410 PHAND$(IN) = PHAND$(PCARDS)
  142. 1420 PCARDS = PCARDS - 1
  143. 1430 PHAND$(PCARDS+1) = "   "
  144. 1440 IF PCARDS=0 THEN 2750
  145. 1450 TAKE=0
  146. 1460 GOSUB 1870
  147. 1470 IF CCARDS = 0 THEN 2750
  148. 1480 TAKE=0
  149. 1490 GOTO 560
  150. 1500 END
  151. 1510 REM ******* shuffle routine ******
  152. 1520 LOCATE 6,29: PRINT"NEW GAME"
  153. 1530 TIM$=MID$(TIME$,4,2)
  154. 1540 TIM$=TIM$+MID$(TIME$,7,2)
  155. 1550 SEED=VAL(TIM$)
  156. 1560 RANDOMIZE(SEED)
  157. 1570 COUNT = 1
  158. 1580 WHILE COUNT < 53
  159. 1590    NUMBR=100*RND
  160. 1600    IF NUMBR > 52 THEN 1590
  161. 1610    IF NUMBR = 0 THEN 1590
  162. 1620   IF TEST(NUMBR) = 1 THEN 1590
  163. 1630   TEST(NUMBR) = 1
  164. 1640   DECK(COUNT) = NUMBR
  165. 1650   COUNT = COUNT + 1
  166. 1660   WEND
  167. 1670 IF PSCORE <>0 OR CSCORE<>0                 THEN 1820
  168. 1680 DATA "c","d","h","s"
  169. 1690 FOR I=1 TO 4
  170. 1700 READ SUIT$(I)
  171. 1710 NEXT I
  172. 1720 DATA " A"," 2"," 3"," 4"," 5"," 6"," 7"
  173. 1730 DATA " 8"," 9","10"," J"," Q"," K"
  174. 1740 FOR I = 1 TO 4
  175. 1750   FOR J = 1 TO 13
  176. 1760     N = J+((I-1)*13)
  177. 1770     READ CARD$(N)
  178. 1780     CARD$(N)=CARD$(N)+SUIT$(I)
  179. 1790     NEXT J
  180. 1800   RESTORE 1720
  181. 1810   NEXT I
  182. 1820 FOR I=1 TO 52
  183. 1830   DECK$(I) = CARD$(DECK(I))
  184. 1840 PLAY "mbl64t255o0aa-p64"
  185. 1850   NEXT I
  186. 1860 RETURN
  187. 1870 REM ** computer section
  188. 1880 REM ** sort computer's hand
  189. 1890 TAKE=0
  190. 1900 SORTTEST=1
  191. 1910 WHILE SORTTEST
  192. 1920   SORTTEST=0
  193. 1930   FOR I=1 TO CCARDS-1
  194. 1940     CHAR1$=MID$(CHAND$(I),3)
  195. 1950     CHAR2$=MID$(CHAND$(I+1),3)
  196. 1960     IF CHAR1$>CHAR2$ THEN                      SWAP CHAND$(I),CHAND$(I+1)              : SORTTEST = 1
  197. 1970     NEXT I
  198. 1980     WEND
  199. 1990 REM ** look for suit
  200. 2000 FOR IN=1 TO CCARDS
  201. 2010   S$=MID$(UPCARD$,3,1)
  202. 2020   T$=MID$(CHAND$(IN),3,1)
  203. 2030   IF S$=T$ AND                               MID$(CHAND$(IN),2,1)<>"8"                THEN 2330
  204. 2040   NEXT IN
  205. 2050 REM ** look for number
  206. 2060 FOR IN=1 TO CCARDS
  207. 2070   S$=MID$(UPCARD$,1,2)
  208. 2080   T$=MID$(CHAND$(IN),1,2)
  209. 2090   IF S$=T$ THEN 2330
  210. 2100   NEXT IN
  211. 2110 REM ** look for eight
  212. 2120 FOR IN = 1 TO CCARDS
  213. 2130   IF MID$(CHAND$(IN),2,1)="8"                THEN 2250
  214. 2140   NEXT IN
  215. 2150 REM ** take another card
  216. 2160 IF TAKE = 1 THEN TAKE=0: RETURN
  217. 2170 TAKE = 1
  218. 2180 CCARDS=CCARDS+1
  219. 2190 CHAND$(CCARDS)=DECK$(NEXTCARD)
  220. 2200 NEXTCARD=NEXTCARD+1
  221. 2210 LOCATE 6,29:PRINT "CARDS ";CCARDS
  222. 2220 LOCATE 7,29: PRINT"TOOK CARD"
  223. 2230 IF NEXTCARD = 53 THEN 2870
  224. 2240 GOTO 1900
  225. 2250 REM ** space for playing 8
  226. 2260 IF IN = 1                                  THEN S$=MID$(CHAND$(2),3,1)             ELSE S$=MID$(CHAND$(1),3,1)
  227. 2270 MID$(CHAND$(IN),3,1)=S$
  228. 2280 LOCATE 7,29
  229. 2290 IF S$="c" THEN PRINT"CLUBS    "
  230. 2300 IF S$="d" THEN PRINT"DIAMONDS "
  231. 2310 IF S$="h" THEN PRINT"HEARTS   "
  232. 2320 IF S$="s" THEN PRINT"SPADES   "
  233. 2330 UPCARD$=CHAND$(IN)
  234. 2340 IF IN <> CCARDS THEN                       CHAND$(IN)=CHAND$(CCARDS)
  235. 2350 CCARDS=CCARDS-1
  236. 2360 LOCATE 6,29:PRINT "CARDS ";CCARDS
  237. 2370 IF CCARDS=1 THEN LOCATE 7,29:              PRINT"LAST CARD":SOUND 400,5
  238. 2380 RETURN
  239. 2390 REM ** print a card
  240. 2400 FOR SI=1 TO 5
  241. 2410 FOR SJ = 1 TO 5
  242. 2420 LOCATE (ROW+(SI-1)),(COL+(SJ-1))
  243. 2430 PRINT FIG$(SI,SJ)
  244. 2440 NEXT SJ,SI
  245. 2450 COLOR 2,7
  246. 2460 RETURN
  247. 2470 REM ** create figure
  248. 2480 IF PASS = 1 THEN 2640
  249. 2490 PASS=1
  250. 2500 FIG$(2,4)=" "
  251. 2510 FIG$(3,4)=" "
  252. 2520 FIG$(3,2)=" "
  253. 2530 FIG$(4,2)=" "
  254. 2540 FIG$(1,1)=CHR$(201)
  255. 2550 FIG$(1,5)=CHR$(187)
  256. 2560 FIG$(5,1)=CHR$(200)
  257. 2570 FIG$(5,5)=CHR$(188)
  258. 2580 FOR SI=1 TO 3
  259. 2590 FIG$(1,SI+1)=CHR$(205)
  260. 2600 FIG$(5,SI+1)=CHR$(205)
  261. 2610 FIG$(SI+1,1)=CHR$(186)
  262. 2620 FIG$(SI+1,5)=CHR$(186)
  263. 2630 NEXT SI
  264. 2640 IF THE$="   " THEN FOR SI=1 TO 5 :         FOR SJ=1 TO 5:COLOR 7,7:                FIG$(SI,SJ) = " ": NEXT SJ,SI:          PASS=0: RETURN
  265. 2650 COLOR 7,2:FIG$(2,3)=" "
  266. 2660 FIG$(4,3)=" "
  267. 2670 IF MID$(THE$,1,1)=" "                      THEN FIG$(2,2)=MID$(THE$,2,1):               FIG$(4,4)=FIG$(2,2)                ELSE FIG$(2,2)="1":FIG$(2,3)="0":            FIG$(4,3)="1":FIG$(4,4)="0"
  268. 2680 S$=MID$(THE$,3,1)
  269. 2690 IF S$="d" THEN FIG$(3,3)=CHR$(4):COLOR 4,7
  270. 2700 IF S$="c" THEN FIG$(3,3)=CHR$(5):COLOR 0,7
  271. 2710 IF S$="h" THEN FIG$(3,3)=CHR$(3):COLOR 4,7
  272. 2720 IF S$="s" THEN FIG$(3,3)=CHR$(6):COLOR 0,7
  273. 2730 RETURN
  274. 2740 END
  275. 2750 LOCATE 7,29
  276. 2760 IF PCARDS=0                                THEN PRINT"YOU WIN!!"                   ELSE PRINT"I WIN !!"
  277. 2770 FOR SI=1 TO PCARDS
  278. 2780 SPHAND$=SPHAND$+PHAND$(SI)
  279. 2790 FOR SJ=1 TO 13
  280. 2800 IF MID$(PHAND$(SI),2,1)=MID$(VALUE$(SJ),1,1)    THEN CSCORE=CSCORE+VALUE(SJ)
  281. 2810 NEXT SJ,SI
  282. 2820 FOR SI=1 TO CCARDS
  283. 2830 SCHAND$=SCHAND$+CHAND$(SI)
  284. 2840 FOR SJ=1 TO 13
  285. 2850 IF MID$(CHAND$(SI),2,1)=MID$(VALUE$(SJ),1,1)    THEN PSCORE=PSCORE+VALUE(SJ)
  286. 2860 NEXT SJ,SI
  287. 2870 FOR SI=1 TO 52
  288. 2880 TEST(SI)=0
  289. 2890 NEXT SI
  290. 2900 IF PSCORE<100 AND CSCORE <100              THEN 370
  291. 2910 LOCATE 6,4:PRINT "COMPUTER";CSCORE
  292. 2920 LOCATE 7,4:PRINT N$;PSCORE
  293. 2930 PRINT"thank you"
  294. 2940 END
  295. 65399 '** DONE - PRESS ENTER TO RETURN TO MENU **
  296.